// 地图
import * as Cesium from 'cesium'
import config from './config.js'
import layer from './layer.js'
import camera from './camera.js'

class CesiumMap {
  constructor () {}

  // 初始化
  init (setting) {
    setting = setting || {}
    let options = setting.options || {}
    window.CESIUM_BASE_URL = setting.CESIUM_BASE_URL || config.CESIUM_BASE_URL
    Cesium.Ion.defaultAccessToken = setting.defaultAccessToken || config.defaultAccessToken
    const viewer = new Cesium.Viewer(setting.id, Object.assign({
      geocoder: false, // 是否显示地名查找控件
      homeButton: false,
      sceneModePicker: true, // 是否显示投影方式控件（2D、2.5D、3D展示方式切换）
      selectionIndicator: true,
      baseLayerPicker: false, // 是否显示图层选择控件
      navigationHelpButton: false, // 是否显示帮助信息控件
      animation: false, // 是否显示动画控件
      // creditContainer: "credit",
      timeline: false, // 是否显示时间线控件
      fullscreenButton: false,
      vrButton: false,
      infoBox: false, //是否显示点击要素之后显示的信息
      // requestRenderMode: true, //启用请求渲染模式
      scene3DOnly: false, // 每个几何实例将只能以3D渲染以节省GPU内存,设置为true,2、3维切换按钮将被隐藏
      // sceneMode: 3, //初始场景模式 1 2D模式 2 2D循环模式 3 3D模式  Cesium.SceneMode
      // imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
      //   url: "http://{s}.tianditu.gov.cn/img_w/wmts?tk=5e5949f7e96e8a136ef36a6594f18cdf",
      //   layer: "img",
      //   style: "default",
      //   tileMatrixSetID: "w",
      //   format: "tiles",
      //   subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], // 服务域名
      //   maximumLevel: 18,
      // })
    }, options))
    viewer._cesiumWidget._creditContainer.style.display = 'none'
    viewer.scene.fxaa = false
    viewer.scene.imageryLayers.removeAll() // 去除其他图层
    // viewer.imageryLayers.get(0).show = false; // 隐藏默认地球
    // viewer.scene.globe.baseColor = Cesium.Color.BLACK; // 黑色球
    // 图层初始化
    layer.init(viewer, setting)
    // 像机初始化
    camera.init(viewer, setting)
    // 关闭双击事件
    viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
      Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
    )

    return viewer
  }
}

const cmap = new CesiumMap()

export default cmap

export {
  Cesium,
  CesiumMap
}
